#include <stdlib.h>
#include "Arbre.h"
#include "Symbole.h"
#include "SymboleValue.h"
#include "NoeudVisitor.h"



NoeudVisitor::NoeudVisitor() { } //
NoeudVisitor::~NoeudVisitor() { } //
//    virtual ~NoeudVisitor();
void NoeudVisitor::VisitNoeudSeqInst(NoeudSeqInst*) {
}
void NoeudVisitor::VisitNoeudPour(NoeudPour*) {
}
void NoeudVisitor::VisitNoeudSi(NoeudSi*) {
}
void NoeudVisitor::VisitNoeudTantQue(NoeudTantQue*) {
}
void NoeudVisitor::VisitNoeudRepeter(NoeudRepeter*) {
}
void NoeudVisitor::VisitNoeudAffectation(NoeudAffectation*) {
}
void NoeudVisitor::VisitNoeudEcrire(NoeudEcrire*) {
}
void NoeudVisitor::VisitNoeudLire(NoeudLire*) {
}
void NoeudVisitor::VisitNoeudOperateurBinaire(NoeudOperateurBinaire*) {
}
void NoeudVisitor::VisitSymboleValue(SymboleValue*) {
}



AfficherVisitor::AfficherVisitor() : NoeudVisitor() {
    indentation =0;    //
}
//    virtual ~NoeudVisitor();
void AfficherVisitor::VisitNoeudSeqInst(NoeudSeqInst* e) {
    afficherIndentation();
    cout << "Noeud - Sequence de " << e->getSize() << " instruction(s)" << endl;
}
void AfficherVisitor::VisitNoeudPour(NoeudPour*) {
    afficherIndentation();
    cout << "Noeud - Pour" << endl;
}
void AfficherVisitor::VisitNoeudSi(NoeudSi*) {
    afficherIndentation();
    cout << "Noeud - Si" << endl;
}
void AfficherVisitor::VisitNoeudTantQue(NoeudTantQue*) {
    afficherIndentation();
    cout << "Noeud - TantQue" << endl;
}
void AfficherVisitor::VisitNoeudRepeter(NoeudRepeter*) {
    afficherIndentation();
    cout << "Noeud - Repeter" << endl;
}
void AfficherVisitor::VisitNoeudAffectation(NoeudAffectation*) {
    afficherIndentation();
    cout << "Noeud - Affectation" << endl;
}
void AfficherVisitor::VisitNoeudEcrire(NoeudEcrire*) {
    afficherIndentation();
    cout << "Noeud - Ecrire" << endl;
}
void AfficherVisitor::VisitNoeudLire(NoeudLire*) {
    afficherIndentation();
    cout << "Noeud - Lire" << endl;
}
void AfficherVisitor::VisitNoeudOperateurBinaire(NoeudOperateurBinaire* e) {
    afficherIndentation();
    cout << "Noeud - Operateur Binaire \"" << e->getOperateur().getChaine() << "\" applique a : " << endl;
}
void AfficherVisitor::VisitSymboleValue(SymboleValue* e) {
    afficherIndentation();
    cout << "Feuille - Symbole value : " << e->getChaine() << endl;
}



GetValeurVisitor::GetValeurVisitor() : NoeudVisitor() {
}
//    virtual ~NoeudVisitor();
void GetValeurVisitor::VisitNoeudSeqInst(NoeudSeqInst* e) {
    cout << "Noeud - Sequence de " << e->getSize() << " instruction(s)" << endl;
}
void GetValeurVisitor::VisitNoeudPour(NoeudPour*) {
    cout << "Noeud - Pour" << endl;
}
void GetValeurVisitor::VisitNoeudSi(NoeudSi*) {
    cout << "Noeud - Si" << endl;
}
void GetValeurVisitor::VisitNoeudTantQue(NoeudTantQue*) {
    cout << "Noeud - TantQue" << endl;
}
void GetValeurVisitor::VisitNoeudRepeter(NoeudRepeter*) {
    cout << "Noeud - Repeter" << endl;
}
void GetValeurVisitor::VisitNoeudAffectation(NoeudAffectation*) {
    cout << "Noeud - Affectation" << endl;
}
void GetValeurVisitor::VisitNoeudEcrire(NoeudEcrire*) {
    cout << "Noeud - Ecrire" << endl;
}
void GetValeurVisitor::VisitNoeudLire(NoeudLire*) {
    cout << "Noeud - Lire" << endl;
}
void GetValeurVisitor::VisitNoeudOperateurBinaire(NoeudOperateurBinaire* e) {
    cout << "Noeud - Operateur Binaire \"" << e->getOperateur().getChaine() << "\" applique a : " << endl;
}
void GetValeurVisitor::VisitSymboleValue(SymboleValue* e) {
    cout << "Feuille - Symbole value : " << e->getChaine() << endl;
}
